package com.ruoyi.common;

import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.system.mapper.SysDeptMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

@Component
public class GenericMethodsService {
    @Autowired
    private SysDeptMapper sysDeptMapper;




    /**
     * 获取部门信息并转换为 Map
     *
     * 该方法从数据库中查询所有部门信息，并将这些信息转换为一个 Map。
     * Map 的键为部门的 unitCode，值为 SysDept 对象。如果存在重复的 unitCode，
     * 则选择第一个出现的 SysDept 对象。
     *
     * @return 返回一个包含部门信息的 Map，键为 unitCode，值为 SysDept 对象。
     */
    public Map<Long, SysDept> getDeptMap() {
        // 获取部门信息
        List<SysDept> depts = sysDeptMapper.selectDeptListV2(new SysDept());

        // 将部门信息转换为 Map，处理重复键的情况
        Map<Long, SysDept> deptMap = depts.stream()
                .collect(Collectors.toMap(
                        SysDept::getUnitCode,
                        dept -> dept,
                        (existing, replacement) -> existing // 选择第一个出现的 SysDept 对象
                ));

        return deptMap;
    }

}
